package com.ferreteria.zarate.web.validator;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

import com.ferreteria.zarate.model.Cliente;
import com.ferreteria.zarate.service.ClienteManager;

@Component
public class ClienteValidator implements Validator{
	
	@Autowired
	private ClienteManager clienteManager;
		
	@SuppressWarnings("rawtypes")
	public boolean supports(Class clazz) {
		return Cliente.class.isAssignableFrom(clazz);
	}

	public void validate(Object object, Errors errors) {
		
		Cliente cliente = (Cliente)object;
		if (StringUtils.isEmpty(cliente.getNombre()))
		{
			errors.rejectValue("nombre", "cliente.nombre.required");
		}
		
		if(cliente.getApellido() == null
				|| StringUtils.isEmpty(cliente.getApellido().toString()))
		{
			errors.rejectValue("apellido", "cliente.apellido.required");		
		}
		

		
		boolean isRepeatName = clienteManager.isRepeatDescription(cliente.getNombre(), cliente.getIdCliente());
		if(isRepeatName){
			errors.rejectValue("nombre", "cliente.nombre.isRepeat");		
		}
	}

}
